package zhongbo.java.air.airmonitor.service;


import zhongbo.java.air.airmonitor.model.FlightActivityDaily;
import zhongbo.java.air.common.vo.PageVo;

import java.util.List;

/**
 * 说明：
 *
 * @author 钟波dellNotebook
 * @since 2025年04月08日 星期二 04:05:30
 */
public interface IFlightActivityDailyService<FlightActivityDaily> {

    /**
     * 查询当天分组统计结果
     *
     * @param date 某一天的日期 2025-04-08
     * @return 当天分组统计结果
     */
     public List<FlightActivityDaily> selectDailyStats(String date);

    /**
     * 从数据库查询当天分组统计结果
     *
     * @param date 某一天的日期 2025-04-08
     * @return 当天分组统计结果
     */
     public List<FlightActivityDaily> getDailyStats(String date);

    /**
     * 插入数据
     *
     * @param flightActivityDaily 当日活动飞机
     * @return FlightActivityDaily 返回实体
     */
     public FlightActivityDaily insert(FlightActivityDaily flightActivityDaily);

    /**
     * 更新数据
     *
     * @param flightActivityDaily 当日活动飞机
     * @return FlightActivityDaily 返回实体
     */
     public FlightActivityDaily update(FlightActivityDaily flightActivityDaily);

    /**
     * 根据主键删除数据
     *
     * @param id 主键
     * @return
     */
     public String deleteById(String id);

    /**
     * 根据主键查询数据
     *
     * @param id 主键
     * @return FlightActivityDaily 返回实体
     */
     public FlightActivityDaily queryById(String id);

   /**
     * 根据ICAO码和日期查询数据
     *
     * @param icaoCode ICAO码
     * @param date     日期
     * @return FlightActivityDaily 返回实体
     */
     public FlightActivityDaily queryByIcaoCodeAndDate(String icaoCode, String date);

    /**
     * 根据ICAO码查询数据
     *
     * @param icaoCode ICAO码
     * @return FlightActivityDaily 返回实体
     */
     public FlightActivityDaily queryByIcao(String icaoCode) throws RuntimeException;


    /**
     * 分页查询
     *
     * @param pageNumber 页码
     * @param pageSize   每页大小
     * @param keyword  查询字段查询关键词
     * @param fields   查询关键词
     * @param oderByField  排序字段
     * @param orderByAsc  是否排序
     *
     * @return 分页查询结果
     */
    PageVo<FlightActivityDaily> findPage(Integer pageNumber, Integer pageSize
            , String icao, String startDate, String endDate
            , String keyword, String fields
            , String oderByField, Boolean orderByAsc);

}
